@@ -21,6 +21,7 @@ module Agents |
||
21 | 21 |
* `this.memory()` |
22 | 22 |
* `this.memory(key)` |
23 | 23 |
* `this.memory(keyToSet, valueToSet)` |
24 |
+ * `this.setMemory(object)` (sets the memory to the values of the input object) |
|
24 | 25 |
* `this.deleteKey(key)` (deletes a key from memory and returns the value) |
25 | 26 |
* `this.credential(name)` |
26 | 27 |
* `this.credential(name, valueToSet)` |
@@ -115,9 +116,12 @@ module Agents |
||
115 | 116 |
context["doLog"] = lambda { |a, x| log x } |
116 | 117 |
context["doError"] = lambda { |a, x| error x } |
117 | 118 |
context["getMemory"] = lambda { |a| memory.to_json } |
118 |
- context["setMemory"] = lambda do |a, x, y| |
|
119 |
+ context["setKey"] = lambda do |a, x, y| |
|
119 | 120 |
memory[x] = clean_nans(y) |
120 | 121 |
end |
122 |
+ context["setMemory"] = lambda do |a, x| |
|
123 |
+ memory.replace(clean_nans(x)) |
|
124 |
+ end |
|
121 | 125 |
context["deleteKey"] = lambda { |a, x| memory.delete(x).to_json } |
122 | 126 |
context["escapeHtml"] = lambda { |a, x| CGI.escapeHTML(x) } |
123 | 127 |
context["unescapeHtml"] = lambda { |a, x| CGI.unescapeHTML(x) } |
@@ -165,7 +169,7 @@ module Agents |
||
165 | 169 |
|
166 | 170 |
Agent.memory = function(key, value) { |
167 | 171 |
if (typeof(key) !== "undefined" && typeof(value) !== "undefined") { |
168 |
- setMemory(key, value); |
|
172 |
+ setKey(key, value); |
|
169 | 173 |
} else if (typeof(key) !== "undefined") { |
170 | 174 |
return JSON.parse(getMemory())[key]; |
171 | 175 |
} else { |
@@ -173,6 +177,10 @@ module Agents |
||
173 | 177 |
} |
174 | 178 |
} |
175 | 179 |
|
180 |
+ Agent.setMemory = function(obj) { |
|
181 |
+ setMemory(obj); |
|
182 |
+ } |
|
183 |
+ |
|
176 | 184 |
Agent.credential = function(name, value) { |
177 | 185 |
if (typeof(value) !== "undefined") { |
178 | 186 |
setCredential(name, value); |
@@ -212,6 +212,22 @@ describe Agents::JavaScriptAgent do |
||
212 | 212 |
end |
213 | 213 |
end |
214 | 214 |
|
215 |
+ describe "setMemory" do |
|
216 |
+ it "stores an object" do |
|
217 |
+ @agent.options['code'] = 'Agent.check = function() { |
|
218 |
+ var u = {}; |
|
219 |
+ u["one"] = 1; |
|
220 |
+ u["two"] = 2; |
|
221 |
+ this.setMemory(u); |
|
222 |
+ };' |
|
223 |
+ @agent.save! |
|
224 |
+ @agent.check |
|
225 |
+ expect(@agent.memory).to eq({ "one" => 1, "two" => 2 }) |
|
226 |
+ @agent.save! |
|
227 |
+ expect { @agent.reload.memory }.not_to raise_error |
|
228 |
+ end |
|
229 |
+ end |
|
230 |
+ |
|
215 | 231 |
describe "deleteKey" do |
216 | 232 |
it "deletes a memory key" do |
217 | 233 |
@agent.memory = { foo: "baz" } |